package com.shujia.homework1;

import com.shujia.homework1.MyMapper;
import com.shujia.homework1.MyReducer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class TestDemo {
    public static void main(String[] args) throws Exception {
        //创建hadoop配置文件对象
        Configuration conf = new Configuration();
        //创建整个mapreduce作业，将来集群会将这个作业提交到yarn上面进行执行
        Job job = Job.getInstance(conf);
        //给整个作业起一个名字
        job.setJobName("城市相关");

        //设置reduce的个数 如果不设置，默认只有一个reduce，只会产生一个结果文件
//        job.setNumReduceTasks(2);

        //设置作业运行的主类名
        job.setJarByClass(TestDemo.class);
        //指定map类
        job.setMapperClass(MyMapper.class);
        //指定reduce类
        job.setReducerClass(MyReducer.class);

        //设置map的输出key-value类型
        job.setMapOutputKeyClass(Text.class);
            job.setMapOutputValueClass(Text.class);

        //设置reduce的输出key-value类型
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(Text.class);

        //指定数据的输入路径，是HDFS上的路径
        //路径将来是以传参数的形式指定
        FileInputFormat.addInputPath(job,new Path(args[0]));
        //指定输出路径
        //注意：MapReduce输出的是一个文件夹，文件夹中包含了结果文件，这个文件夹不需要手动创建
        //只需要在运行之前进行指定，将来会自动创建
        FileOutputFormat.setOutputPath(job,new Path(args[1]));


        //提交作业到yarn中执行
        boolean flag = job.waitForCompletion(true);
        System.out.println(flag?"任务成功":"任务失败");
    }
}
